1. Field of the Invention
The present invention is directed to a method and system for autonomously processing requests. More particularly, this invention is directed to a method and system for acting on requests and queries received from users regarding complex data maintained in a structured form.
2. Description of Related Art
For the purposes of the present invention, data maintained in a database, file, or other source of structured and/or tagged data is referred to as “structured data.” So called “virtual robots” (or “Bots”) are software programs that interact and/or communicate with users (human, machine, or otherwise) and take actions or make responses according to input from these users. “Bot” refers to any program which interacts with a user in some fashion and should not be assumed to refer only to physically embodied robots. “Input” refers to any description of a situation the Bot may encounter; although the most common inputs are textual inputs from users, inputs can be actions taken by users, external circumstances, or even events internal to the Bot such as an internal alarm clock.
A common use of a Bot is as an interface to a web site where the administrator of that site (the “administrator”) has programmed the Bot to answer simple inquiries (the “input”) that are typically asked by visitors to the site. The Bot finds a pattern, consisting of text and/or code, that best matches the input, and then takes the action that it is programmed to take in connection with that pattern (the “response”). The response can take the form of a text string that contains the information sought by the user (which text string can be transmitted to the user in text form, “read” by a text-to-speech engine, played back to the user as a wave file, or otherwise transmitted to the user in a comprehensible form) or the response can be any other action of which a program is capable, for example, opening a web page, turning a circuit on or off, initiating or ending a program, and the like.
It is desirable that the Bot be scripted to anticipate the inputs that it is likely to receive and the situations that it is likely to encounter. Because users may ask questions or otherwise create inputs in a wide variety of different ways, a large variety of patterns are required to comprehensively anticipate the variety of inputs that the Bot may receive. This complexity is greatly increased by the number of different ways a user may create any particular input. For example, if a user wants to know the name of the president of the Administrator's company, the user may input a text string reading “Who is your President?”, “What's the President's name?”, or even “Who's the top dog at AdminCo.?”
Historically, Bots have been scripted manually, by having one or more human scripters write patterns for the Bot and tie those patterns to appropriate responses. Such human scripting, although usually necessary, has a number of drawbacks. First, scripting is time-consuming. A typical Bot may contain thousands of possible patterns and responses, all of which need to be scripted. Second, the list of patterns and responses is usually incomplete. It is almost impossible for the scripters to comprehensively cover all possible patterns for a large substantial body of information and desired responses. Furthermore, there is a compound increase in the number of patterns where large bodies of data are involved. For example, the complexity and difficulty of scripting, by hand, patterns that pertain to all the ways a user might input a query about a baseball player's team affiliation, hits, walks, runs, RBI's, batting average, and errors, together with appropriate responses, is very high. This task rapidly becomes insurmountable if, for example, one is trying to script this information by hand for all the baseball players in the major leagues for the past 20 years. The time, expense, and difficulty become very high, as does the opportunity for scripter error and omission. Moreover, as the information changes or is added to over time, the time, expense, and difficulty of maintaining the patterns and responses that refer to the information are very substantial as well. Similar problems are encountered where scripters are faced with a company having a large line of products or a government agency having a large number of employees, assets, or services.
Scripters have tried to work around this problem in a limited way by referring to databases or external software programs (e.g., a search engine, time clock, or weather report) when scripting the responses. This has the advantage of allowing dynamic information to be included in an answer, such that it will change as necessary. However, even this method is of limited utility, because patterns must still be hard coded with all necessary variations to generate the appropriate response. Where users are likely to ask for the information that they want by reference to another piece of data that would itself typically be stored as structured data, for example, the name of a baseball player, a product, or a government employee, properly hard coding appropriate patterns is both daunting initially and expensive to maintain and update.
This process has been eased somewhat by maintaining data about users, such as their address, phone number, stock portfolio, or the like. This is useful in that, when a user inputs a query such as “what is the weather like?”, the Bot can assume that the input means “what is the weather like at my address?” and can respond appropriately. Although useful, it will be appreciated that this technique does not obviate the need to disambiguate those items of information that refer not to the user, but to a large amount of data unrelated to the user. For example, if a user's favorite baseball player was Jose Canseco, and this information was maintained in a data field, the technique described in this paragraph could enable the Bot to look in response to the question “How did my favorite ballplayer do today?” for information regarding the baseball player Jose Canseco. However, if the same user input the question “How did Jose Canseco do today?”, the same Bot would not know who Jose Canseco was, or even that he was a baseball player, without this information being hard coded into a pattern containing the words “Jose Canseco.”
Thus, there is a need in the art to provide a method enabling scripters to be able to create patterns that refer to information that is maintained in a database, file, spreadsheet, or otherwise as structured data, without manually hard coding the structured data itself into the patterns. Additionally, there is a need for a method that acts on requests and queries received from users regarding complex data maintained in a structured form.